Jupyterノートブックプロット

Jupyter ノートで pyvista でインタラクティブにプロット!

pythreejs を使ったデモ

pythreejs を使ってインタラクティブな物理ベースのレンダリングを行います.

import pyvista as pv
from pyvista import examples

# download an example and display it using physically based rendering.
mesh = examples.download_lucy()
mesh.plot(color='lightgrey', pbr=True, metallic=0.2,
          jupyter_backend='pythreejs')

ipygany を使ったデモ

from pyvista import demos

# basic glyphs demo
mesh = demos.glyphs(2)

text = demos.logo.text_3d("I'm interactive!", depth=0.2)
text.points *= 0.1
text.translate([0, 1.4, 1.5], inplace=True)
mesh += text
mesh['Example Scalars'] = mesh.points[:, 0]

mesh.plot(cpos='xy', jupyter_backend='ipygany', show_scalar_bar=True)

panel を使ったデモ

from pyvista import demos
demos.plot_logo(jupyter_backend='panel')

サポートされるモジュール

PyVistaモジュールは,Jupyterノートブック内でプロットする際のさまざまなバックエンドをサポートしています:

  • ipyvtklink を介したノートブックへのPyVistaストリーミングによるサーバ側のレンダリング

  • pythreejs を使ったクライアントサイドレンダリング threejs を使ったクライアントサイドレンダリング.

  • threejs を使用した ipygany によるクライアント側レンダリング.

  • vtk.js を使用した panel を使用したクライアント側レンダリング.

  • itk.jsvtk.js を使用した itkwidgets によるクライアント側レンダリング.

  • 静止画像.


各バックエンドの詳細

これらの描画バックエンドの使用方法の詳細については,各バックエンドの個々のパッケージページを参照してください.

3 D対話型Jupyterlabプロットの状態

注釈

Jupyterノートブック内の3 Dプロットは,Jupyterがまだ比較的新しい技術であることもありますが,ここで使用されているWeb技術も新しい技術であり,ますます多くのユーザや開発者がクラウドやクラウドベースのビジュアライゼーションに移行しているため,急速に発展しています.ここにあるものは壊れ,急速に変化する可能性が高いです

これは2021年3月に書かれ,2021年8月に更新されたもので,すでに古くなっている可能性があります. 必ず,開発者のウェブサイトで変更点を確認してください.

Jupyterlabを使用してプロットする場合は,多数のモジュールのいずれかを使用することもできますが,それぞれに長所,短所,および短所があります. pyvistaPlotting クラスを使用するときにAPIの違いのいくつかを取り除こうとしますが,プロットはバックエンドによって異なるように見えます.また,バックエンドが異なると要件も異なり,展開環境をサポートしない場合があります.

次の表に,jupyterノートブックプロットモジュールで使用されるさまざまな機能とテクノロジを示します.

Jupyterノートブック3 Dモジュール

Jupyterlab 3

レンダリングの場所

バックエンド

フレームバッファが必要

panel

Yes

クライアント

vtk.js

Yes

pythreejs

Yes

クライアント

threejs

いいえ

ipygany

Yes

クライアント

threejs

いいえ

ipyvtklink

Yes

サーバ

vtk

Yes

itkwidgets

いいえ

クライアント

vtk.js

Yes

At the moment, itkwidgets and ipyvtklink are incompatible with Jupyterlab 3, and will result in a "Error displaying widget: model not found" message from juptyer. Additionally, all the modules other than ipygany and pythreejs require a framebuffer, which can be set up on a headless environment with pyvista.start_xvfb(). However, on Google Colab, where it's not possible to install system packages, you should stick with a module like threejs, which does not require any server side rendering or framebuffer.

フレームバッファを必要とするバックエンドのためのヘッドレス環境へのインストールの詳細については, インストール を参照してください.個々のパッケージをインストールする場合,簡単な pip install <package> を使用してJupyterlab 3互換パッケージをインストールできます.詳細は,他のパッケージのインストール手順を参照してください.

PyVistaでの使用法

jupyterのプロッティングバックエンドを設定するには2つの方法があります. まず, Plotter.show()dataset.plot()``jupyter_backend` パラメータを設定することで,プロットごとに設定することができます. また, pyvista.set_jupyter_backend() でグローバルに設定することもできます. 詳細はこちらをご覧ください.

set_jupyter_backend(backend)[ソース]

Jupyterノートブックのプロットバックエンドを設定します.

パラメータ
backendstr

プロット時に使用するJupyterバックエンドです.次のいずれかである必要があります.

  • 'ipyvtklink' : Render remotely and stream the resulting VTK images back to the client. Supports all VTK methods, but suffers from lag due to remote rendering. Requires that a virtual framebuffer be set up when displaying on a headless server. Must have ipyvtklink installed.

  • 'panel' : Convert the VTK render window to a vtkjs object and then visualize that within jupyterlab. Supports most VTK objects. Requires that a virtual framebuffer be set up when displaying on a headless server. Must have panel installed.

  • 'ipygany' : すべてのメッシュを ipygany メッシュに変換し,クライアント側でレンダリングするメッシュをストリーミングします.VTKメッシュをサポートしていますが,他にはほとんどありません. none を除き,これは仮想フレームバッファを必要としない唯一の方法です. ipygany がインストールされている必要があります.

  • 'pythreejs'`` : すべてのメッシュを pythreejs のメッシュに変換し,それらをストリームしてクライアント側でレンダリングします. ipygany を除けば,この方法は仮想フレームバッファを必要としない唯一の方法です. 必ず pythreejs がインストールされている必要があります.

  • 'static' : Display a single static image within the Jupyterlab environment. Still requires that a virtual framebuffer be set up when displaying on a headless server, but does not require any additional modules to be installed.

  • 'none' : jupyterlab内にプロットを表示せず,専用のVTKレンダリングウィンドウを使用して表示します.これは,仮想フレームバッファがあっても,ヘッドレスサーバー上では何も生成しません.

pythreejsバックエンドを有効にします.

>>> import pyvista as pv
>>> pv.set_jupyter_backend('pythreejs')  

ipygany バックエンドを有効にします.

>>> import pyvista as pv
>>> pv.set_jupyter_backend('ipygany')  

panelバックエンドを有効にします.

>>> pv.set_jupyter_backend('panel')  

ipyvtklink バックエンドを有効にします.

>>> pv.set_jupyter_backend('ipyvtklink')  

静止画像を表示するだけです.

>>> pv.set_jupyter_backend('static')  

JupyterLab内のすべてのプロットを無効にし,準のデスクトップVTKレンダリングウィンドウを使用して表示します.

>>> pv.set_jupyter_backend(None)  # or 'none'